

package main.new_2024.month_06;


import java.util.Arrays;

/**
 * @Description: todo 2806. 取整购买后的账户余额
 * 一开始，你的银行账户里有 100 块钱。
 * 给你一个整数purchaseAmount ，它表示你在一次购买中愿意支出的金额。
 * 在一个商店里，你进行一次购买，实际支出的金额会向 最近 的 10 的 倍数 取整。
 * 换句话说，你实际会支付一个 非负 金额 roundedAmount ，满足 roundedAmount 是 10 的倍数且 abs(roundedAmount - purchaseAmount) 的值 最小 。
 * 如果存在多于一个最接近的 10 的倍数，较大的倍数 是你的实际支出金额。
 * 请你返回一个整数，表示你在愿意支出金额为 purchaseAmount 块钱的前提下，购买之后剩下的余额。
 * 注意： 0 也是 10 的倍数。
 *
 * todo 881. 救生艇
 * 给定数组 people 。people[i]表示第 i 个人的体重 ，船的数量不限，每艘船可以承载的最大重量为 limit。
 * 每艘船最多可同时载两人，但条件是这些人的重量之和最多为 limit。
 * 返回 承载所有人所需的最小船数 。
 *
 * @Author: Take-off
 * @Date: 1:00 PM 2024/2/27
 * @Param:
 * @return:
 **/
public class Solution0612 {

    //救生艇
    public int numRescueBoats(int[] people, int limit) {
        //排序后双指针
        Arrays.sort(people);
        int count = 0;
        int left = 0;
        int right = people.length-1;
        while (left <right){
            if (people[left] + people[right] <= limit){
                left++;
            }
            count++;
            right--;
        }
        if (left == right) count++;
        return count;
    }

    public static void main(String[] args) {
        Solution0612 test = new Solution0612();
        int[] people = {3,2,2,1};
        int i = test.numRescueBoats(people, 3);
        System.out.println(i);
    }

    //相同分数的最大操作数目
    public int accountBalanceAfterPurchase(int purchaseAmount) {
        return 100 - (int)Math.round(purchaseAmount/10.0) * 10;
    }

}

